<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 箭头函数  =>   ES6 允许使用“箭头”（=>）定义函数。(函数的简写)

    // var f = v => v;


    // 普通函数改写箭头函数:
    // 1. 将普通函数改为匿名函数 (所有的箭头函数都是匿名函数)
    // 2. 匿名函数改写箭头函数  省略关键词function 在() 加 =>
    // 3. 如果形式参数只有一个(且没有设置默认值,或者参数解构) 小括号可以省略
    //    如果没有形参,或者形参超过一个,小括号不能省略
    // 4. 如果函数的执行语句只有一条,且是return语句  {}和return都可以省略
    //    如果箭头函数简写过程中 要返回对象 -> 需要用()包裹


    // function add(a, b) {
    //     return a + b;
    // }

    // function double(n) {
    //     return n * 2;
    // }

    // 1. 将普通函数改为匿名函数 (所有的箭头函数都是匿名函数)
    // var add = function (a, b) {
    //     return a + b
    // }

    // var double = function (n) {
    //     return n * 2;
    // }

    // 2. 匿名函数改写箭头函数  省略关键词function 在() 加 =>
    var add = (a, b) => {
        return a + b
    }

    var double = (n) => {
        return n * 2;
    }

    // 3. 如果形式参数只有一个(且没有设置默认值,或者参数解构) 小括号可以省略
    // 如果没有形参, 或者形参超过一个, 小括号不能省略

    // var add = (a, b) => { //形参超过一个不能省略
    //     return a + b
    // }

    // var double = (n = 0) => { // 形参有默认值  -> 不能省略
    //     return n * 2;
    // }


    // 4. 如果函数的执行语句只有一条,且是return语句  {}和return都可以省略
    // var double = n => {   // 函数的执行语句有两条  不能省略
    //     console.log(n);
    //     return n * 2;
    // }


    // var double = n => n * 2;
    // // console.log(double);
    // var res = double(10);
    // console.log(res);

    // 如果箭头函数简写过程中 要返回对象 -> 需要用()包裹
    var fn = v => ({ num: v });    // 返回一个对象 {num:v}
    var res = fn(10)
    console.log(res);



</script>

</html>